<html>
	<head>
		<meta charset="utf-8"></meta>
		<title>BTree</title>
		<link href="./style.css" rel="stylesheet" type="text/css"/>
	</head>
	<body>
		<div class="class" name="BTree">
			<h1>BTree</h1>
			<p>继承自<a href="BThing.html">BThing</a></p>
			<p id="resume">BTree是树型容器，所有的数据使用一块内存空间进行管理，彼此间使用链接方式组织。<a href="#desc">详细</a></p>
			<h2>public</h2>
			<table id="public">
				<tr><td align="right">class </td><td><a href="#const_iterator;">const_iterator;</a></td></tr>
				<tr><td align="right">class </td><td><a href="#const_iterator">const_iterator</a></td></tr>
			</table>
			<h2>public</h2>
			<table id="public">
				<tr><td align="right">inline </td><td><a href="#BTree() :)">BTree</a>() : _def();</td></tr>
				<tr><td align="right">inline </td><td><a href="#BTree(const BTree<UT>& other) :)">BTree</a>(const BTree<UT>& other) : _def();</td></tr>
				<tr><td align="right">inline </td><td><a href="#BTree(const BTree& other) :)">BTree</a>(const BTree& other) : _def();</td></tr>
				<tr><td align="right">inline </td><td><a href="#~BTree()">~BTree</a>();</td></tr>
				<tr><td align="right">inline int </td><td><a href="#size() const">size</a>() const;</td></tr>
				<tr><td align="right">inline int </td><td><a href="#capacity() const">capacity</a>() const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#empty() const">empty</a>() const;</td></tr>
				<tr><td align="right">inline void </td><td><a href="#reset()">reset</a>();</td></tr>
				<tr><td align="right">inline void </td><td><a href="#clear()">clear</a>();</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#relax()">relax</a>();</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#reserve(int)">reserve</a>(int size);</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#contain(const UT&) const">contain</a>(const UT& value) const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#existed(const UT&) const">existed</a>(const UT& value) const;</td></tr>
				<tr><td align="right">inline iterator </td><td><a href="#prepend(const UT&)">prepend</a>(const UT& value);</td></tr>
				<tr><td align="right">inline iterator </td><td><a href="#prepend(const T&)">prepend</a>(const T& value);</td></tr>
				<tr><td align="right">inline iterator </td><td><a href="#prepend()">prepend</a>();</td></tr>
				<tr><td align="right">inline iterator </td><td><a href="#append(const UT&)">append</a>(const UT& value);</td></tr>
				<tr><td align="right">inline iterator </td><td><a href="#append(const T&)">append</a>(const T& value);</td></tr>
				<tr><td align="right">inline iterator </td><td><a href="#append()">append</a>();</td></tr>
				<tr><td align="right">inline iterator </td><td><a href="#insert(int, const UT&)">insert</a>(int pos, const UT& value);</td></tr>
				<tr><td align="right">inline iterator </td><td><a href="#insert(int, const T&)">insert</a>(int pos, const T& value);</td></tr>
				<tr><td align="right">inline iterator </td><td><a href="#insert(int)">insert</a>(int pos);</td></tr>
				<tr><td align="right">inline int </td><td><a href="#remove(int,int)">remove</a>(int pos, int count = 1);</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#remove(const UT&)">remove</a>(const UT& value);</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#remove(const T&)">remove</a>(const T& value);</td></tr>
				<tr><td align="right">inline int </td><td><a href="#count() const">count</a>() const;</td></tr>
				<tr><td align="right">inline T& </td><td><a href="#at(int)">at</a>(int index);</td></tr>
				<tr><td align="right">inline const T& </td><td><a href="#at(int) const">at</a>(int index) const;</td></tr>
				<tr><td align="right">inline T& </td><td><a href="#first()">first</a>();</td></tr>
				<tr><td align="right">inline const T& </td><td><a href="#first() const">first</a>() const;</td></tr>
				<tr><td align="right">inline T& </td><td><a href="#last()">last</a>();</td></tr>
				<tr><td align="right">inline const T& </td><td><a href="#last() const">last</a>() const;</td></tr>
				<tr><td align="right">inline iterator </td><td><a href="#find(const UT&)">find</a>(const UT& value);</td></tr>
				<tr><td align="right">inline const_iterator </td><td><a href="#find(const UT&) const">find</a>(const UT& value) const;</td></tr>
				<tr><td align="right">inline iterator </td><td><a href="#search(const UT&)">search</a>(const UT& value);</td></tr>
				<tr><td align="right">inline const_iterator </td><td><a href="#search(const UT&) const">search</a>(const UT& value) const;</td></tr>
				<tr><td align="right">inline iterator </td><td><a href="#begin()">begin</a>();</td></tr>
				<tr><td align="right">inline iterator </td><td><a href="#seek(int)">seek</a>(int index);</td></tr>
				<tr><td align="right">inline iterator </td><td><a href="#end()">end</a>();</td></tr>
				<tr><td align="right">inline const_iterator </td><td><a href="#begin() const">begin</a>() const;</td></tr>
				<tr><td align="right">inline const_iterator </td><td><a href="#seek(int) const">seek</a>(int index) const;</td></tr>
				<tr><td align="right">inline const_iterator </td><td><a href="#end() const">end</a>() const;</td></tr>
				<tr><td align="right">inline iterator </td><td><a href="#rbegin()">rbegin</a>();</td></tr>
				<tr><td align="right">inline iterator </td><td><a href="#rseek(int)">rseek</a>(int index);</td></tr>
				<tr><td align="right">inline iterator </td><td><a href="#rend()">rend</a>();</td></tr>
				<tr><td align="right">inline const_iterator </td><td><a href="#rbegin() const">rbegin</a>() const;</td></tr>
				<tr><td align="right">inline const_iterator </td><td><a href="#rseek(int) const">rseek</a>(int index) const;</td></tr>
				<tr><td align="right">inline const_iterator </td><td><a href="#rend() const">rend</a>() const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#erase(iterator&)">erase</a>(iterator& it);</td></tr>
				<tr><td align="right">inline T& </td><td><a href="#def()">def</a>();</td></tr>
				<tr><td align="right">inline const T& </td><td><a href="#def() const">def</a>() const;</td></tr>
				<tr><td align="right">inline T& </td><td><a href="#operator()(int)">operator</a>()(int index);</td></tr>
				<tr><td align="right">inline const T& </td><td><a href="#operator()(int) const">operator</a>()(int index) const;</td></tr>
				<tr><td align="right">inline const BTree& </td><td><a href="#operator = (const BTree&)">operator = </a>(const BTree& other);</td></tr>
				<tr><td align="right">inline const BTree& </td><td><a href="#operator = (const iterator&)">operator = </a>(const iterator& cit);</td></tr>
				<tr><td align="right">inline const BTree& </td><td><a href="#operator = (const_iterator&)">operator = </a>(const_iterator& cit);</td></tr>
			</table>
			<div id="desc">
				<h2>详细介绍：</h2>
				<p>BTree是树型容器，所有的数据使用一块内存空间进行管理，彼此间使用链接方式组织。</p><p>BTree中的元素可以包含子元素，我们可以称没有父元素的元素为顶层元素。使用迭代器对元素进行访问会是很方便，以下简单示例：<pre>void print(BTree<int>::iterator it)
{
	int level = it.level();
	while (level--)
		printf("\t");
	printf("%d\n", *it);
	for (auto sub = it.begin(); sub < it.end(); sub++)
	{
		print(sub);
	}
}

int main(int argc, char* argv[])
{
	BTree<int> itree;
	for (int i = 1; i < 5; i++)
	{
		auto topIt = itree.append(i);
		for (int t = 10; t < 50; t += 10)
		{
			topIt.append(i * t);
		}
	}
	auto ret = itree.search(30);
	for (auto it = itree.rbegin(); it > itree.rend(); it--)
	{
		print(it);
	}
	return 0;
}</pre></p>
			</div>
			<h2 id="docs">成员文档：</h2>
			<div id="const_iterator;">
				<h3>class const_iterator;</h3>
				<p>元素迭代器，指代一个元素。此迭代器可像链表一样管理其子元素。</p>
			</div>
			<div id="const_iterator">
				<h3>class const_iterator</h3>
				<p>元素迭代器，指代一个元素。此迭代器可像链表一样管理其子元素。</p>
			</div>
			<div id="BTree() :)">
				<h3>inline BTree() : _def();</h3>
				<p>构造一棵空的树。</p>
			</div>
			<div id="BTree(const BTree<UT>& other) :)">
				<h3>inline BTree(const BTree&lt;UT&gt;&amp; other) : _def();</h3>
				<p>构造一棵树，并将other树的内容拷贝到此树中。</p>
			</div>
			<div id="BTree(const BTree& other) :)">
				<h3>inline BTree(const BTree&amp; other) : _def();</h3>
				<p>构造一棵树，并将other树的内容拷贝到此树中。</p>
			</div>
			<div id="~BTree()">
				<h3>inline ~BTree();</h3>
				<p>析构一棵树。</p>
			</div>
			<div id="size() const">
				<h3>inline int size() const;</h3>
				<p>获取元素的个数。</p>
			</div>
			<div id="capacity() const">
				<h3>inline int capacity() const;</h3>
				<p>获得现有内存大小，即能容纳多少元素。</p>
			</div>
			<div id="empty() const">
				<h3>inline bool empty() const;</h3>
				<p>判断此树是否为空。当元素个数为空，内存可能仍然不效。</p>
			</div>
			<div id="reset()">
				<h3>inline void reset();</h3>
				<p>清除所有元素，但不释放内存空间。</p>
			</div>
			<div id="clear()">
				<h3>inline void clear();</h3>
				<p>清除所有元素，并释放所有内存空间。</p>
			</div>
			<div id="relax()">
				<h3>inline bool relax();</h3>
				<p>重新计算现有的元素需要的内存空间大小，若现有的内存空间多出太多则释放多余的空间。</p>
			</div>
			<div id="reserve(int)">
				<h3>inline bool reserve(int size);</h3>
				<p>调整内存空间使之可以容纳size个元素，对多出的空间释放，不够则添加。</p>
			</div>
			<div id="contain(const UT&) const">
				<h3>inline bool contain(const UT&amp; value) const;</h3>
				<p>判断是否包含等于value的顶层元素，注意：此操作只对顶层元素的进行检索。</p>
			</div>
			<div id="existed(const UT&) const">
				<h3>inline bool existed(const UT&amp; value) const;</h3>
				<p>检索所有的元素，判断是否包含等于value的元素。</p>
			</div>
			<div id="prepend(const UT&)">
				<h3>inline iterator prepend(const UT&amp; value);</h3>
				<p>向树的前端添加顶层元素，对新元素赋值value，返回其迭代。</p>
			</div>
			<div id="prepend(const T&)">
				<h3>inline iterator prepend(const T&amp; value);</h3>
				<p>向树的前端添加顶层元素，对新元素赋值value，返回其迭代。</p>
			</div>
			<div id="prepend()">
				<h3>inline iterator prepend();</h3>
				<p>向树的前端添加顶层元素，返回其迭代。</p>
			</div>
			<div id="append(const UT&)">
				<h3>inline iterator append(const UT&amp; value);</h3>
				<p>向树的末端添加顶层元素，对新元素赋值value，返回其迭代。</p>
			</div>
			<div id="append(const T&)">
				<h3>inline iterator append(const T&amp; value);</h3>
				<p>向树的末端添加顶层元素，对新元素赋值value，返回其迭代。</p>
			</div>
			<div id="append()">
				<h3>inline iterator append();</h3>
				<p>向树的末端添加顶层元素，返回其迭代。</p>
			</div>
			<div id="insert(int, const UT&)">
				<h3>inline iterator insert(int pos, const UT&amp; value);</h3>
				<p>向树中的pos位置插入一个顶层元素，对新元素赋值value，返回其迭代。</p>
			</div>
			<div id="insert(int, const T&)">
				<h3>inline iterator insert(int pos, const T&amp; value);</h3>
				<p>向树中的pos位置插入一个顶层元素，对新元素赋值value，返回其迭代。</p>
			</div>
			<div id="insert(int)">
				<h3>inline iterator insert(int pos);</h3>
				<p>向树中的pos位置插入一个顶层元素，返回其迭代。</p>
			</div>
			<div id="remove(int,int)">
				<h3>inline int remove(int pos, int count = 1);</h3>
				<p>删除若干个元素，pos指示开始处，count指定数量。</p>
			</div>
			<div id="remove(const UT&)">
				<h3>inline bool remove(const UT&amp; value);</h3>
				<p>删除等于value的顶层元素。</p>
			</div>
			<div id="remove(const T&)">
				<h3>inline bool remove(const T&amp; value);</h3>
				<p>删除等于value的顶层元素。</p>
			</div>
			<div id="count() const">
				<h3>inline int count() const;</h3>
				<p>获取顶层元素数量。</p>
			</div>
			<div id="at(int)">
				<h3>inline T&amp; at(int index);</h3>
				<p>获取index位置的顶层元素的引用。</p>
			</div>
			<div id="at(int) const">
				<h3>inline const T&amp; at(int index) const;</h3>
				<p>获取index位置的顶层元素的常量引用。</p>
			</div>
			<div id="first()">
				<h3>inline T&amp; first();</h3>
				<p>获取第一个元素的引用。</p>
			</div>
			<div id="first() const">
				<h3>inline const T&amp; first() const;</h3>
				<p>获取第一个元素的常量引用。</p>
			</div>
			<div id="last()">
				<h3>inline T&amp; last();</h3>
				<p>获取最后一个元素的引用。</p>
			</div>
			<div id="last() const">
				<h3>inline const T&amp; last() const;</h3>
				<p>获取最后一个元素的常量引用。</p>
			</div>
			<div id="find(const UT&)">
				<h3>inline iterator find(const UT&amp; value);</h3>
				<p>寻找等于value的顶层元素，返回其迭代器。</p>
			</div>
			<div id="find(const UT&) const">
				<h3>inline const_iterator find(const UT&amp; value) const;</h3>
				<p>寻找等于value的顶层元素，返回其常量迭代器。</p>
			</div>
			<div id="search(const UT&)">
				<h3>inline iterator search(const UT&amp; value);</h3>
				<p>寻找等于value的元素，返回其迭代器。</p>
			</div>
			<div id="search(const UT&) const">
				<h3>inline const_iterator search(const UT&amp; value) const;</h3>
				<p>寻找等于value的元素，返回其常量迭代器。</p>
			</div>
			<div id="begin()">
				<h3>inline iterator begin();</h3>
				<p>取得第一个顶层元素的迭代器。</p>
			</div>
			<div id="seek(int)">
				<h3>inline iterator seek(int index);</h3>
				<p>取得index位置的元素的顶层迭代器。</p>
			</div>
			<div id="end()">
				<h3>inline iterator end();</h3>
				<p>取得顶层结束位置的迭代器，此迭代器是无效的。</p>
			</div>
			<div id="begin() const">
				<h3>inline const_iterator begin() const;</h3>
				<p>取得第一个顶层元素的常量迭代器。</p>
			</div>
			<div id="seek(int) const">
				<h3>inline const_iterator seek(int index) const;</h3>
				<p>取得index位置的元素的顶层常量迭代器。</p>
			</div>
			<div id="end() const">
				<h3>inline const_iterator end() const;</h3>
				<p>取得顶层结束位置的迭代器，此迭代器是无效的。</p>
			</div>
			<div id="rbegin()">
				<h3>inline iterator rbegin();</h3>
				<p>取得逆向第一个顶层元素的迭代器，即最后一个顶层元素的迭代器。</p>
			</div>
			<div id="rseek(int)">
				<h3>inline iterator rseek(int index);</h3>
				<p>取得倒数第index个顶层元素的顶层迭代器。</p>
			</div>
			<div id="rend()">
				<h3>inline iterator rend();</h3>
				<p>取得顶层逆向结束位置的迭代器，此迭代器是无效的，其位置为-1。</p>
			</div>
			<div id="rbegin() const">
				<h3>inline const_iterator rbegin() const;</h3>
				<p>取得逆向第一个顶层元素的常量迭代器，即最后一个顶层元素的常量迭代器。</p>
			</div>
			<div id="rseek(int) const">
				<h3>inline const_iterator rseek(int index) const;</h3>
				<p>取得倒数第index个顶层元素的顶层常量迭代器。</p>
			</div>
			<div id="rend() const">
				<h3>inline const_iterator rend() const;</h3>
				<p>取得顶层逆向结束位置的常量迭代器，此迭代器是无效的，其位置为-1。</p>
			</div>
			<div id="erase(iterator&)">
				<h3>inline bool erase(iterator&amp; it);</h3>
				<p>擦除迭代器it指示的元素，此操作的迭代器不针对顶层元素。</p>
			</div>
			<div id="def()">
				<h3>inline T&amp; def();</h3>
				<p>取得默认元素的引用。</p>
			</div>
			<div id="def() const">
				<h3>inline const T&amp; def() const;</h3>
				<p>取得默认元素的常量引用。</p>
			</div>
			<div id="operator()(int)">
				<h3>inline T&amp; operator()(int index);</h3>
				<p>取得index位置的顶层元素引用。</p>
			</div>
			<div id="operator()(int) const">
				<h3>inline const T&amp; operator()(int index) const;</h3>
				<p>取得index位置的顶层元素常量引用。</p>
			</div>
			<div id="operator = (const BTree&)">
				<h3>inline const BTree&amp; operator = (const BTree&amp; other);</h3>
				<p>清空树中的所有元素，并拷贝other树中的元素到此树中。返回此树常量引用。</p>
			</div>
			<div id="operator = (const iterator&)">
				<h3>inline const BTree&amp; operator = (const iterator&amp; cit);</h3>
				<p>清空树中的所有元素，并拷贝一个其它树中的元素到此树中。返回此树常量引用。</p>
			</div>
			<div id="operator = (const_iterator&)">
				<h3>inline const BTree&amp; operator = (const_iterator&amp; cit);</h3>
				<p>清空树中的所有元素，并拷贝一个其它树中的元素到此树中。返回此树常量引用。</p>
			</div>
		</div>
	</body>
</html>